43 Input() : mObject(NULL), mIndex(0), mSize(0), mFixedInput(NULL), mType(
kFrameNormal), mUpdate(
false),
mParameters(
false), mTrigger(
true), mSwitchable(
false) {}
78 Output() : mMemory(NULL), mType(
kFrameNormal), mCurrentSize(0), mRequestedSize(0), mPointerOffset(0) {}
85 size_t mRequestedSize;
86 size_t mPointerOffset;
98 virtual void setFixedInput(
unsigned long idx,
double *input,
unsigned long size);
103 virtual void reset(
double samplingRate,
unsigned long maxBlockSize);
127 void setIO(
unsigned long nIns,
unsigned long nOuts,
unsigned long nAudioChans = 0);
141 bool isTrigger(
unsigned long idx) {
return mInputs[idx].mTrigger && mInputs[idx].mObject && (mInputs[idx].mObject->mFrameTime == mFrameTime); }
162 double *
getInput(
unsigned long idx,
size_t *size);
165 double *
getOutput(
unsigned long idx,
size_t *size);
170 void copyVector(
double *output,
double *input,
unsigned long size) { std::copy(input, input + size, output); }
171 void zeroVector(
double *output,
unsigned long size) { std::fill_n(output, size, 0.0); }
188 virtual void blockProcess(
double **ins,
double **outs,
unsigned long blockSize) {}
192 virtual void objectReset() {}
196 virtual void update() {}
200 virtual SchedulerInfo schedule(
bool newFrame,
bool noAdvance) = 0;
204 virtual void process() = 0;
214 inline void freeOutputMemory();
215 inline void releaseOutputMemory();
219 inline void dependencyNotify(
bool releaseMemory,
bool fromInput);
220 void dependenciesReady();
221 void setOutputDependencyCount();
222 void incrementInputDependency();
223 void resetDependencyCount();
227 std::vector <FrameLib_DSP *>::iterator removeInputDependency(
FrameLib_DSP *
object);
228 std::vector <FrameLib_DSP *>::iterator removeOutputDependency(
FrameLib_DSP *
object);
234 void clearConnection(
unsigned long inIdx);
235 void removeConnection(
unsigned long inIdx);
236 std::vector <FrameLib_DSP *>::iterator disconnect(
FrameLib_DSP *
object);
264 std::vector <Input> mInputs;
265 std::vector <Output> mOutputs;
267 std::vector <FrameLib_DSP *> mInputDependencies;
268 std::vector <FrameLib_DSP *> mOutputDependencies;
273 long mDependencyCount;
274 long mOutputMemoryCount;
284 bool mUpdatingInputs;
FrameLib_TimeFormat getFrameTime()
Definition: FrameLib_DSP.h:145
ObjectType
Definition: FrameLib_Types.h:24
static bool handlesAudio()
Definition: FrameLib_DSP.h:348
Definition: FrameLib_Types.h:24
Definition: FrameLib_Parameters.h:21
bool allocateOutputs()
Definition: FrameLib_DSP.cpp:206
FL_FP FrameLib_TimeFormat
Definition: FrameLib_Types.h:20
Definition: FrameLib_Types.h:25
Definition: FrameLib_Context.h:10
virtual const FrameLib_Parameters * getParameters()
Definition: FrameLib_DSP.h:116
FrameLib_TimeFormat getInputValidTime(unsigned long idx)
Definition: FrameLib_DSP.h:153
static bool handlesAudio()
Definition: FrameLib_DSP.h:302
double * getInput(unsigned long idx, size_t *size)
Definition: FrameLib_DSP.cpp:257
void setParameterInput(unsigned long idx)
Definition: FrameLib_DSP.cpp:170
FrameLib_DSP * getOutputObject(unsigned long outIdx)
Definition: FrameLib_DSP.h:175
virtual void addConnection(FrameLib_DSP *object, unsigned long outIdx, unsigned long inIdx)
Definition: FrameLib_DSP.cpp:99
Definition: FrameLib_Parameters.h:34
FrameLib_TimeFormat getInputTime()
Definition: FrameLib_DSP.h:147
FrameLib_TimeFormat getCurrentTime()
Definition: FrameLib_DSP.h:148
Definition: FrameLib_DSP.h:17
virtual FrameType inputType(unsigned long idx)
Definition: FrameLib_DSP.h:118
static bool handlesAudio()
Definition: FrameLib_DSP.h:370
FrameLib_TimeFormat mTimeAdvance
Definition: FrameLib_DSP.h:34
Definition: FrameLib_DSP.h:361
virtual void setFixedInput(unsigned long idx, double *input, unsigned long size)
Definition: FrameLib_DSP.cpp:30
FrameLib_Processor(FrameLib_Context context, FrameLib_Parameters::Info *info, unsigned long nIns=0, unsigned long nOuts=0)
Definition: FrameLib_DSP.h:298
static ObjectType getType()
Definition: FrameLib_DSP.h:301
Definition: FrameLib_DSP.h:26
unsigned long getNumAudioIns()
Definition: FrameLib_Object.h:40
double * getOutput(unsigned long idx, size_t *size)
Definition: FrameLib_DSP.cpp:274
virtual SchedulerInfo schedule(bool newFrame, bool noAdvance)
Definition: FrameLib_DSP.h:308
double mSamplingRate
Definition: FrameLib_DSP.h:244
FrameLib_TimeFormat getValidTime()
Definition: FrameLib_DSP.h:146
virtual SchedulerInfo schedule(bool newFrame, bool noAdvance)
Definition: FrameLib_DSP.h:354
FrameLib_Parameters mParameters
Definition: FrameLib_DSP.h:253
Definition: FrameLib_FixedPoint.h:47
ObjectType getType()
Definition: FrameLib_Object.h:27
void inputMode(unsigned long idx, bool update, bool trigger, bool switchable, FrameType type=kFrameNormal)
Definition: FrameLib_DSP.cpp:160
void addParameterInput()
Definition: FrameLib_DSP.cpp:178
void requestOutputSize(unsigned long idx, size_t size)
Definition: FrameLib_DSP.h:157
virtual bool isConnected(unsigned long inIdx)
Definition: FrameLib_DSP.cpp:131
SchedulerInfo()
Definition: FrameLib_DSP.h:28
FrameLib_TimeFormat getInputFrameTime(unsigned long idx)
Definition: FrameLib_DSP.h:152
bool mNewFrame
Definition: FrameLib_DSP.h:35
virtual void process()
Definition: FrameLib_DSP.h:376
void updateTrigger(unsigned long idx, bool trigger)
Definition: FrameLib_DSP.cpp:197
static ObjectType getType()
Definition: FrameLib_DSP.h:369
void zeroVector(double *output, unsigned long size)
Definition: FrameLib_DSP.h:171
Definition: FrameLib_Object.h:95
bool isTrigger(unsigned long idx)
Definition: FrameLib_DSP.h:141
void setIO(unsigned long nIns, unsigned long nOuts, unsigned long nAudioChans=0)
Definition: FrameLib_DSP.cpp:138
size_t blockSize(void *ptr)
Definition: FrameLib_Memory.cpp:23
Definition: FrameLib_Parameters.h:153
Definition: FrameLib_DSP.h:293
virtual void deleteConnection(unsigned long inIdx)
Definition: FrameLib_DSP.cpp:92
void outputMode(unsigned long idx, FrameType type)
Definition: FrameLib_DSP.cpp:190
SchedulerInfo(FrameLib_TimeFormat timeAdvance, bool newFrame, bool outputDone)
Definition: FrameLib_DSP.h:31
FrameLib_TimeFormat getBlockEndTime()
Definition: FrameLib_DSP.h:150
unsigned long mMaxBlockSize
Definition: FrameLib_DSP.h:245
ManagedPointer< FrameLib_DSPQueue, &Global::getDSPQueue, &Global::releaseDSPQueue > DSPQueue
Definition: FrameLib_Context.h:73
Definition: FrameLib_DSP.h:339
static ObjectType getType()
Definition: FrameLib_DSP.h:347
void setIO(unsigned long nIns, unsigned long nOuts)
Definition: FrameLib_DSP.h:310
Definition: FrameLib_Types.h:24
bool mOutputDone
Definition: FrameLib_DSP.h:36
FrameType
Definition: FrameLib_Types.h:25
virtual void blockUpdate(double **ins, double **outs, unsigned long blockSize)
Definition: FrameLib_DSP.cpp:52
virtual void reset(double samplingRate, unsigned long maxBlockSize)
Definition: FrameLib_DSP.cpp:68
FrameLib_Context::Allocator mAllocator
Definition: FrameLib_DSP.h:249
FrameLib_AudioOutput(FrameLib_Context context, FrameLib_Parameters::Info *info, unsigned long nIns=0, unsigned long nOuts=0, unsigned long nAudioOuts=0)
Definition: FrameLib_DSP.h:344
FrameLib_DSP(ObjectType type, FrameLib_Context context, FrameLib_Parameters::Info *info, unsigned long nIns, unsigned long nOuts, unsigned long nAudioChans=0)
Definition: FrameLib_DSP.cpp:6
ManagedPointer< FrameLib_LocalAllocator, &Global::getAllocator, &Global::releaseAllocator > Allocator
Definition: FrameLib_Context.h:71
FrameLib_TimeFormat getBlockStartTime()
Definition: FrameLib_DSP.h:149
Definition: FrameLib_Types.h:24
~FrameLib_DSP()
Definition: FrameLib_DSP.cpp:16
FrameLib_Scheduler(FrameLib_Context context, FrameLib_Parameters::Info *info, unsigned long nIns=0, unsigned long nOuts=0, unsigned long nAudioIns=0)
Definition: FrameLib_DSP.h:366
virtual void clearConnections()
Definition: FrameLib_DSP.cpp:116
Definition: FrameLib_DSPQueue.h:12
virtual FrameType outputType(unsigned long idx)
Definition: FrameLib_DSP.h:119
void copyVector(double *output, double *input, unsigned long size)
Definition: FrameLib_DSP.h:170